package com.tulele.vtool.mapper;

import com.tulele.vtool.model.BrandInfo;
import com.tulele.vtool.model.UserBrandInfo;
import com.tulele.vtool.model.combinedEntity.UserBrandCombinedInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

@Component(value = "userBrandInfoMapper")
public interface UserBrandInfoMapper {

    /**
     * 添加用户品牌
     * @param record
     * @return
     */
    int addUserBrandInfo(UserBrandInfo record);

    /**
     * 更新用户品牌
     * @param record
     * @return
     */
    int updateUserBrandInfo(UserBrandInfo record);

    /**
     * 获取用户品牌信息
     * @param userId
     * @return
     */
    List<UserBrandCombinedInfo> queryUserBrandInfo(Integer userId);

    /**
     * 复制推荐人的品牌
     * @param userId
     * @param referer
     * @return
     */
    int copyRefererBrand(@Param("userId")Integer userId,@Param("referer")Integer referer);

    /**
     * 获取用户品牌信息
     * @param userId
     * @return
     */
    List<UserBrandCombinedInfo> queryUserBrandInfo2(Integer userId);

    /**
     * 查询用户品牌名称
     * @param userId
     * @return
     */
    List<String> queryUserBrandName(Integer userId);

    /**
     * 查询用户品牌状态
     * @param userBrandInfo
     * @return
     */
    UserBrandInfo queryUserBrandStatusInfo(UserBrandInfo userBrandInfo);

    /**
     * 修改用户所有品牌有效状态
     * @param userId
     * @return
     */
    int updateUserBrandEffectiveStatus(Integer userId);

    /**
     * 修改用户所有微站选中状态
     * @param userId
     * @return
     */
    int updateAllUserBrandStatus(Integer userId);

    /**
     * 修改用户指定微站选中状态
     * @param userBrandInfo
     * @return
     */
    int updateUserSpecialBrandStatus(UserBrandInfo userBrandInfo);

    /**
     * 更新用户品牌订阅状态
     * @param userBrandInfo
     * @return
     */
    int updUserBrandSubStatus(UserBrandInfo userBrandInfo);

    /**
     * 查询用户选中的品牌信息
     * @param userId
     * @return
     */
    BrandInfo queryUserSelectBrandInfo(@Param("userId")Integer userId);

    /**
     * 查询品牌订阅人数
     * @param brandId
     * @return
     */
    int queryBrandSubCount(@Param("brandId")Integer brandId);

    /**
     * 用户更新品牌海报
     * @param userBrandInfo
     * @return
     */
    int uploadUserBandPosterImg(UserBrandInfo userBrandInfo);

    /**
     * 用户查询品牌海报
     * @param userBrandInfo
     * @return
     */
    UserBrandInfo queryUserBandPosterImg(UserBrandInfo userBrandInfo);

    /**
     * 获取用户品牌海报信息
     * @param userId
     * @return
     */
    List<UserBrandInfo> queryUserBandPosterImgInfoList(@Param("userId")Integer userId);
}